Fibre Channel is a network protocol that uses credit-based flow control. Each input port has a buffer of a given number of credits. The connected output port is informed of this given number of credits and uses that as a reference for a credit counter. Each time a frame is transmitted by the output port, the credit counter is incremented. Each time a frame is consumed at the target having the input port, meaning that a frame has been removed from the buffer, a ready is returned to the source. When the source receives this ready, the credit counter is decremented. Prior to transmitting a frame, the output port determines if the credit counter has reached the given number of credits. If so, this means that the buffer at the input port is full and the frame cannot be transmitted.
This process works smoothly as long as the target is consuming frames at basically the rate being provided by the source. However, if the target is consuming frames slower than the source, a slow drain condition is present (or at least developing). Should this slow drain condition persist, eventually the input buffer is filled and the flow stops and no more frames are received.
It is common in various networking protocols to provide a message back to a source to indicate that it should slow down, as the target is falling behind. This is straightforward if the target itself detects the condition. In various cases the target cannot determine the condition and a connected switch must provide a message to the target to inform the target of the condition, so that the target can then send the slow down message to the source or sources.
However, if the network protocol is using credit-based flow control, such as Fibre Channel, there may be no credit remaining to allow the switch to send the message to the target. Under that condition, the switch cannot provide the message, the target never sends the slow down message to the source and the condition persists, hindering network performance.